package com.starhub.domain.annotate.enums;

import lombok.Getter;

/**
 * 使用方式枚举
 * @version: V1.0
 * @author: liuhf
 * @time 2025-06-18
 */
@Getter
public enum UseTypeEnums {
    VARIABLE(0, "", FormatDataEnums.SINGLEDATA),
    FIXED(1, "只需要从下面提供的{metaName}清单中获取即可，不要自由发挥\n {metaName}清单如下：", FormatDataEnums.SINGLEDATA);

    private final Integer code;
    private final String prompt;
    private final FormatDataEnums formatData;

    UseTypeEnums(Integer code, String prompt, FormatDataEnums formatData) {
        this.code = code;
        this.prompt = prompt;
        this.formatData = formatData;
    }

    /**
     * 根据code获取枚举值
     * @param code
     * @return
     */
    public static UseTypeEnums getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (UseTypeEnums type : values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        return null;
    }

    /**
     * 根据code获取描述
     * @param code
     * @return
     */
    public static String getPromptByCode(Integer code) {
        UseTypeEnums type = getByCode(code);
        return type == null ? "" : type.getPrompt();
    }

    /**
     * 根据code获取格式化数据
     * @param code
     * @return
     */
    public static FormatDataEnums getFormatDataByCode(Integer code) {
        UseTypeEnums type = getByCode(code);
        return type == null ? null : type.getFormatData();
    }

    /**
     * 判断code是否有效
     * @param code
     * @return
     */
    public static boolean isValid(Integer code) {
        return getByCode(code) != null;
    }
}
